#include<bits/stdc++.h>
using namespace std;
const int N=200001;

int T;
int n,m;
bool visit[N];
char colors[N];
int fa[N];
vector<int> edges[N];
vector<int> edget[N];

int main()
{
    scanf("%d",&T);
    for(int i=0;i<T;i++){
        scanf("%d%d",&n,&m);
        for(int j=1;j<=n;j++){
            edges[j].clear();
            edget[j].clear();
        }
        for(int j=1;j<=m;j++){
            int s0,t0;
            scanf("%d%d",&s0,&t0);
            edges[s0].emplace_back(t0);
            edges[t0].emplace_back(s0);
        }
        if(m<n){
            printf("-1\n");
            continue;
        }
        //BFS
        memset(visit,0,sizeof(visit));
        queue<int> que;
        que.push(1);
        visit[1]=true;
        int cnt=1;
        fa[1]=0;
        int d1=0,d2=0;
        while(!que.empty()){
            int s=que.front();
            que.pop();
            for(auto t:edges[s]){
                //cout<<"edge:"<<s<<' '<<t<<endl;
                if(t==fa[s]) continue;
                if(!visit[t]){
                    visit[t]=true;
                    que.push(t);
                    cnt++;
                    fa[t]=s;
                    edget[s].emplace_back(t);
                }
                else if(visit[t]&&d1==0&&d2==0){
                    d1=s;d2=t;
                }
            }
        }
        //不连通
        if(cnt<n){
            printf("-1\n");
            continue;
        }
        memset(colors,'B',sizeof(colors));
        que.push(d1);
        colors[d1]='W';
        //cout<<"d1:"<<d1<<endl;
        while(!que.empty())
        {
            int p=que.front();
            que.pop();
            for(auto t:edget[p]){
                que.push(t);
                colors[t]='W';
            }
        }
        for(int j=1;j<=n;j++){
            printf("%c",colors[j]);
        }
        printf("\n");
    }
    return 0;
}